package cn.iocoder.yudao.module.diy.listener;

import cn.hutool.json.JSONObject;
import cn.iocoder.yudao.module.diy.compoent.SpringContext;
import cn.iocoder.yudao.module.diy.dal.dataobject.addon.AddonDO;
import cn.iocoder.yudao.module.diy.dal.diy.SetDiyDataParam;
import cn.iocoder.yudao.module.diy.dal.diy.TemplateParam;
import cn.iocoder.yudao.module.diy.event.AddonAddAfterEvent;
import cn.iocoder.yudao.module.diy.service.addon.AddonService;
import cn.iocoder.yudao.module.diy.service.diy.IDiyService;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

@Component
public class AddonAddAfterListener  {

    private IDiyService divService() {
        return SpringContext.bean(IDiyService.class);
    }

    @EventListener
    public void handleEvent(AddonAddAfterEvent event) {
        AddonDO addon=event.getAddonDO();

        JSONObject template=divService().getTemplate(new TemplateParam().setAddon(addon.getAddonKey()));
        Iterator<Map.Entry<String, Object>> iterator = template.entrySet().iterator();
        while (iterator.hasNext()) {
            SetDiyDataParam param=new SetDiyDataParam();
            param.setTenantId(event.getTenantId());
            param.setKey(iterator.next().getKey());
            param.setIsStart(1);
            param.setAddonId(addon.getId());
            param.setSiteId(event.getSiteId());
            param.setAddon(addon.getAddonKey());
            divService().setDiyData(param);
        }

    }

}
